package com.itfreer.xjmh.configuration;

import javax.sql.DataSource;

import org.activiti.engine.ManagementService;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngineConfiguration;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 流程配置
 */
@Configuration
public class BpmConfiguration {

	@Autowired
	private DataSource dataSource;

	/**
	 * 初始化配置，将创建28张表
	 * 
	 * @return
	 */
	@Bean
	public StandaloneProcessEngineConfiguration processEngineConfiguration() {
		StandaloneProcessEngineConfiguration configuration = new StandaloneProcessEngineConfiguration();
		configuration.setDataSource(dataSource);
		configuration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);
		configuration.setAsyncExecutorActivate(false);
		configuration.setActivityFontName("宋体");
		configuration.setLabelFontName("宋体");
		configuration.setAnnotationFontName("宋体");
		return configuration;
	}

	@Bean
	public ProcessEngine processEngine() {
		return processEngineConfiguration().buildProcessEngine();
	}

	@Bean
	public RepositoryService repositoryService() {
		return processEngine().getRepositoryService();
	}

	@Bean
	public RuntimeService runtimeService() {
		return processEngine().getRuntimeService();
	}

	@Bean
	public TaskService taskService() {
		return processEngine().getTaskService();
	}
	
	@Bean
	public ManagementService managementService() {
		return processEngine().getManagementService();
	}
}
